import { useUserStore } from '@/stores/user';

// 页面白名单，这些页面不需要登录即可访问
const whiteList = [
  '/pages/login/index',
  // 如果有其他公共页面，请添加到这里
];

export function setupPermission() {
  const userStore = useUserStore();

  const interceptor = {
    // 页面跳转前进行拦截
    invoke(args: UniApp.NavigateToOptions) {
      const url = args.url.split('?')[0];
      
      if (whiteList.includes(url)) {
        return true; // 在白名单中，直接放行
      }

      if (!userStore.isLoggedIn) {
        uni.showToast({
          title: '请先登录',
          icon: 'none',
        });
        
        // 未登录，跳转到登录页
        uni.reLaunch({
          url: '/pages/login/index',
        });
        return false; // 拦截跳转
      }

      return true; // 已登录，放行
    },
  };

  // 添加页面跳转拦截器
  uni.addInterceptor('navigateTo', interceptor);
  uni.addInterceptor('redirectTo', interceptor);
  uni.addInterceptor('reLaunch', interceptor);
  uni.addInterceptor('switchTab', {
    // switchTab比较特殊，需要单独处理
    invoke(args: UniApp.SwitchTabOptions) {
      const url = args.url.split('?')[0];
      
      if (whiteList.includes(url)) {
        return true;
      }

      if (!userStore.isLoggedIn) {
        uni.showToast({
          title: '请先登录',
          icon: 'none',
        });
        
        uni.reLaunch({
          url: '/pages/login/index',
        });
        return false;
      }

      return true;
    },
  });
}